/**
 * 
 */
package gestionBulletins.model.persistance;

import java.util.ArrayList;
import java.util.Collection;

import gestionBulletins.model.Adherent;
import gestionBulletins.model.Section;

/**
 * Fait la liaison entre le code applicatif et la base de données pour les adhérents.
 * @author Paraita Wohler
 *
 */
public interface DaoAdherent {

	/**
	 * Permet de rendre persistant un adhérent
	 * @param adherent l'adhérent à rendre persistant
	 * @return l'adhérent persistant
	 */
	public Adherent create(Adherent adherent);
	
	/**
	 * Recupère un adhérent de la base de données par rapport a son id
	 * @param id l'identifiant de l'adhérent dans la base de données
	 * @return l'adhérent persistant
	 */
	public Adherent requestById(int id);
	
	/**
	 * Recupère l'identifiant d'un adhérent par rapport à son nom et son prénom usuel
	 * @param nom le nom de l'adhérent que l'on cherche
	 * @param prenom le prénom usuel de l'adhérent que l'on cherche
	 * @return l'identifiant de l'adhérent recherché s'il a été trouvé, 0 sinon (dans le cas ou il n'existe pas dans la base de données)
	 */
	public int requestIdByNomPrenom(String nom, String prenom);
	
	/**
	 * Recupère tout les adhérents d'une section
	 * @param section la section dont on souhaite avoir tout les adhérents
	 * @return l'ensemble des adhérents de la section donnée. Cet ensemble est vide si la section n'existe pas, ou s'il y a vraiment personne dans cette section.
	 */
	public Collection<Adherent> getInscritsBySection(Section section);
	
	/**
	 * Recupère tout les adhérents de la base de données
	 * @return l'ensemble des adhérents de la base de données
	 */
	public ArrayList<Adherent> getAll();
	
	/**
	 * Met à jour un adhérent, dans la base de données (pour la persistance)
	 * @param adherent l'adhérent à mettre à jour dans la base de données
	 */
	public void update(Adherent adherent);
	
	/**
	 * Supprime un adhérent de la base de données
	 * @param adherent l'adhérent à supprimer de la base de données
	 */
	public void delete(Adherent adherent);
	
}
